home *** CD-ROM | disk | FTP | other *** search
- /*
- ** Apple Macintosh Developer Technical Support
- **
- ** Sample code demonstrating detecting CD-ROM drives
- **
- ** by Brian Bechtel, Apple Developer Technical Support
- **
- ** File: WhereCDs.c
- **
- ** Copyright © 1995 Apple Computer, Inc.
- ** All rights reserved.
- **
- ** You may incorporate this sample code into your applications without
- ** restriction, though the sample code has been provided "AS IS" and the
- ** responsibility for its operation is 100% yours. However, what you are
- ** not permitted to do is to redistribute the source as "DTS Sample Code"
- ** after having made changes. If you're going to re-distribute the source,
- ** we require that you make it clear in the source that the code was
- ** descended from Apple Sample Code, but that you've made changes.
- */
- #include <Devices.h>
- #include <TextUtils.h>
- #include "WhereCDs.h"
-
- // From tech note DV 22, CD-ROM Driver Calls. Detects drives which
- // are using the driver name ".AppleCD" in the range of driver
- // reference numbers assigned to the original SCSI bus. Will not
- // handle drives which aren't using a driver named ".AppleCD", nor
- // drives on additional SCSI buses.
- UInt8 WhereCDs()
- {
- UInt8 where = 0; /* assume no drives handled at beginning */
- short scsiAddress;
- short drvrRefNum;
- DCtlHandle aDCtlEntry;
- StringPtr aDriverName;
- StringPtr appleDriverName = "\p.AppleCD";
-
- for (scsiAddress = 0; scsiAddress < 7; scsiAddress++)
- {
- drvrRefNum = -33 - scsiAddress;
- aDCtlEntry = GetDCtlEntry(drvrRefNum);
- if (aDCtlEntry != nil)
- {
- if ((**aDCtlEntry).dCtlFlags & dRAMBasedMask)
- aDriverName = (StringPtr) ((*(DCtlPtr)aDCtlEntry).dCtlDriver+18);
- else
- aDriverName = (StringPtr)((**aDCtlEntry).dCtlDriver+18);
- if ( EqualString(aDriverName, appleDriverName, false, false) == true )
- where |= (1 << scsiAddress);
- }
- }
- return where;
- }
-